package club.zhcs.capture.biz.auth;

import java.util.List;

import club.zhcs.capture.bean.auth.Permission;
import club.zhcs.capture.bean.auth.Role;

import org.nutz.dao.entity.Record;

import com.dgj.utils.entries.Result;
import com.dgj.utils.web.pager.Pager;

public interface IPermissionService {

	List<Permission> findByUserId(int id);

	List<Permission> findByRoles(List<Role> roles);

	List<Permission> findByRoles(int[] roles);

	List<Permission> findByRoleIds(List<Integer> roles);

	List<Permission> findByPositions(int[] positions);

	List<Permission> findByPositionIds(List<Integer> positions);

	Permission findByName(String name);

	Permission addPermission(Permission permission);

	/**
	 * 分页查询所有权限
	 * 
	 * @param page
	 * @return
	 */
	Pager<Record> findByPage(int page);

	/**
	 * 查询所有前置权限
	 * 
	 * @param needPermission
	 */
	List<Permission> findByNeedPermission(int needPermission);

	/**
	 * 根据权限id查询权限
	 * 
	 * @param id
	 * @return
	 */
	Permission findById(int id);

	/**
	 * 更新指定字段
	 * 
	 * @param permission
	 * @param updateField
	 * @return
	 */
	Result update(Permission permission, String... updateField);

	/**
	 * 根据url路径查询
	 * 
	 * @param url
	 * @return
	 */
	Permission findByUrl(String url);

	/**
	 * 删除
	 * 
	 * @param id
	 *            权限id
	 * @return
	 */
	Result delete(int id);

	/**
	 * 查询所有权限
	 * 
	 * @return
	 */
	List<Permission> findAll();

	/**
	 * @param page
	 * @param key
	 * @return
	 */
	Pager<Record> search(int page, String key);

}
